package com.lanchetech.service;

import com.lanchetech.bean.request.ShareActivityReq;
import com.lanchetech.bean.request.ShareDetailedReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.ShareActivitySpuVo;
import com.lanchetech.bean.vo.ShareActivityVo;
import com.lanchetech.bean.vo.ShareDetailedVo;
import com.lanchetech.bean.vo.SpuItemVO;
import com.lanchetech.common.exception.ResultCodeException;
import com.lanchetech.entity.*;

import java.util.List;
import java.util.Set;

public interface ShareActivityService {

    BaseResp editSharActivity(ShareActivity shareActivity) throws ResultCodeException;

    ResultData<BasePageResp<ShareActivityVo>> getShareActivity(ShareActivityReq shareActivityReq);

    void bindSku(Set<ShareActivitySpu> shareActivitySpus, Long activityId,List<String> exceptionList) throws ResultCodeException;

    void whether(Long id) throws ResultCodeException;

    void removeSpu(Long shareActivitySpuId) throws ResultCodeException;

    void freeze(Long id) throws ResultCodeException;

    ResultData<List<SpuItemVO>> getBindSpu(Long shareActivityId);

    ResultData<List <ShareActivityVo>> miniGetShareActivity(ShareActivityReq shareActivityReq);

    ResultData<ShareActivityVo>  getShareActivitySpu(Long shareActivityId) throws ResultCodeException;

    BaseResp deleteShareById(Long shareActivityId) throws ResultCodeException;

    ResultData<BasePageResp<ShareDetailedVo>> getShareDetailed(ShareDetailedReq req);

    void freezeOrNot(Long id) throws ResultCodeException;

    void addTask(ShareDetailedVo detailedVo);

    void provide(ShareDetailed shareDetailed, OrderSku orderSku);

    ResultData<BasePageResp<ShareDetailedVo>> findAllShareDetailed(ShareDetailedReq shareDetailedReq);

}
